package cn.tedu.thread;
/*本类用于多线程编程实现方案2:实现Runnable接口来完成*/
public class TestThread2 {
    public static void main(String[] args) {
        //4,创建自定义类的对象--目标业务类对象
        MyRunnable target= new MyRunnable();
       //5,创建多个线程对象
        /*如何以多线程的方式启动线程?需要调用start()
        * 自己没有,需要与thread类建立联系:thread(Runnable target)
        * 但是由于Runnable是接口,无法实例化,我们可以把接口实现类对象
        * 也就是我们自定义类的对象作为构造函数的参数传入,与thread建立联系*/
        Thread t1 = new Thread(target);
        Thread t2 = new Thread(target);
        Thread t3 = new Thread(target);
        Thread t4 = new Thread(target);
        t1.start();
        t2.start();
        t3.start();
        t4.start();

    }
}
//1,自定义多线程类
class  MyRunnable implements Runnable{
        //2,添加接口中未实现的方法,用来完成业务
    @Override
    public void run() {
        //3,写业务:打印10次当前正在执行的线程名称
        for (int i = 0; i < 10; i++) {
            /*问题:自定义类与父接口Runnable中都没有获取线程名字的方法
            * 所以还需要从Thread类中找:
            * currentThread():静态方法,获取当前正在执行的线程对象
            * getName():非静态方法,由刚刚获取到的线程对象调用,返回当前线程对象的名字*/
            System.out.println(i+"="+Thread.currentThread().getName());
        }
    }
}